package com.wfs.staticmethod;

/**
 * static的注意事项
 * 1 静态方法中可以直接访问静态成员，不可以直接访问实例成员。
 * 2 实例方法中既可以直接访问静态成员，也可以直接访问实例成员。
 * 3 实例方法中可以出现this关键字，静态方法中不可以出现this关键字的。
 */
public class Test3 {
    // 静态变量
    static int staticVar = 10;
    // 实例变量
    int instanceVar = 20;

    public static void main(String[] args) {
        staticMethod();
        Test3 test3 = new Test3();
        test3.instanceMethod();
    }

    // 静态方法
    public static void staticMethod() {
        // 1. 静态方法可以直接访问静态成员
        System.out.println("静态变量: " + staticVar);
        // 以下代码会报错，因为静态方法不能直接访问实例成员
        // System.out.println("实例变量: " + instanceVar); // 编译错误
        // 以下代码会报错，因为静态方法中不能使用this关键字
        // System.out.println("this: " + this); // 编译错误
    }

    // 实例方法
    public void instanceMethod() {
        // 2. 实例方法可以直接访问静态成员
        System.out.println("静态变量: " + staticVar);

        // 实例方法也可以直接访问实例成员
        System.out.println("实例变量: " + instanceVar);

        // 3. 实例方法中可以使用this关键字
        System.out.println("this: " + this);
    }
}
